// 上下文内部维护了具体的策略的引用
// 回头客户端调用的时候，只需要调用上下文的方法即可
import { IStrategy } from "./Interface";

export default class Context {
  // 维护具体的策略
  private strategy: IStrategy;

  constructor(st: IStrategy) {
    this.strategy = st;
  }

  // 设置新的策略
  setStrategy(st: IStrategy) {
    this.strategy = st;
  }

  // 执行策略的方法
  executeStrategy(a: number, b: number): number {
    return this.strategy.execute(a, b);
  }
}
